package main.java.indi.zyj.sword;

public class TrainingPlan6 {

    public int trainingPlan(int[] actions) {

        int[] counts = new int[32];

        for(int action : actions) {
            for(int i = 0; i < 32; i++) {
                counts[i] += action & 1; // 更新第 i 位 1 的个数之和
                action >>= 1;            // 右移
            }
        }

        int res = 0, m = 3;
        for(int i = 31; i >= 0; i--) {
            res <<= 1;
            res |= counts[i] % m;        // 恢复第 i 位
        }
        return res;
    }

}
